'''
介绍:我的实验模块查询接口测试
作者:安雨杰
'''
import json
from unittest import TestCase
from jsonpath import jsonpath
from parameterized import parameterized

from utils.reader import Reader
from utils.session import Session


# 查询
class QueryTest(TestCase):
    '''
    作者:安雨杰
    我的实验查询接口测试
    '''
    session = None
    header = None
    # 在测试类执行前
    @classmethod
    def setUpClass(cls) -> None:
        cls.session = Session.get_session()
        cls.header = Session.get_header()

    @classmethod
    def tearDownClass(cls) -> None:
        cls.session.close()

    @parameterized.expand(Reader.read_excel('my_experiment_query.xlsx',min_row=2,max_row=27,min_col=9,max_col=10))
    def test_Query(self,param,expected_value):
        '''
        查询接口测试,执行my_experiment_query.xlsx里面第2行至第27行的测试用例
        :param param:
        :param expected_value:
        :return:
        '''
        url = 'http://120.53.243.26:8009/api/experiment/findPage'
        # 请求数据
        data = json.loads(param)
        # 发送请求
        resp = self.session.post(url, json=data,headers=Session.get_header())
        # 打印状态码
        print(resp.status_code)
        # 断言状态码
        self.assertEqual(200, resp.status_code)
        # 将响应正文中的字符串转换为json类型的数据
        resp_data = resp.json()
        # 获取json数据中的content的值
        result = jsonpath(resp_data, '$..content')
        # 获取值中的数据
        result = result[0]
        # 根据列表中的预期值与实际值进行对比断言
        if expected_value == '非空列表':
            self.assertNotEqual(0, len(result))
        else:
            self.assertEqual(0, len(result))


if __name__ == '__main__':
    QueryTest()



